package cl.ncx.cmvrc.delegate.ot;

import java.util.List;

import cl.ncx.cmvrc.persistence.base.entities.grua.EstadoGrua;
import cl.ncx.cmvrc.persistence.base.entities.grua.Grua;
import cl.ncx.cmvrc.persistence.base.entities.personas.Gruero;
import cl.ncx.cmvrc.persistence.base.entities.solicitud.OrdenDeTrabajo;
import cl.ncx.cmvrc.persistence.bean.operadorGrua.IOperadorGruaSession;
import cl.ncx.cmvrc.util.serviceLocator.IServiceLocator;
import cl.ncx.cmvrc.util.serviceLocator.ServiceLocator;
import cl.ncx.cmvrc.util.serviceLocator.ServiceLocatorException;

import com.sun.istack.logging.Logger;

public class OrdenTrabajoDelegate {
	
	private final static Logger logger = Logger.getLogger(OrdenTrabajoDelegate.class);
	private static OrdenTrabajoDelegate ordenTrabajoDelegate;
	private IOperadorGruaSession operadorGruaSession;
	
	public static synchronized OrdenTrabajoDelegate getInstance(){
		if(ordenTrabajoDelegate == null)
			ordenTrabajoDelegate = new OrdenTrabajoDelegate();
		return ordenTrabajoDelegate;
	}
	
	private OrdenTrabajoDelegate() {
		initLookup();
	}
	
	private void initLookup(){
		String Session_Name = IOperadorGruaSession.JNDI_NAME;
		
		try{
			IServiceLocator sl = ServiceLocator.getInstance();
			operadorGruaSession = (IOperadorGruaSession) sl.lookup(Session_Name);
			
		}catch (ServiceLocatorException e) {
			e.printStackTrace();
		}
	}
	
	public List<Gruero> getGruaDisponible()
	{
		logger.info("getGruaDisponible");
		try{
			return operadorGruaSession.obtenerGruaDisponible();
		}catch(Exception e)
		{
			e.printStackTrace();
			logger.info("fallo metodo: getGruaDisponible");
		}
		return null;
	}
	
	public void asignaGrua(OrdenDeTrabajo ordenDeTrabajo)
	{
		logger.info("asignaGrua");
		try{
			 operadorGruaSession.asignaGrua(ordenDeTrabajo);
		}catch(Exception e)
		{
			e.printStackTrace();
			logger.info("fallo metodo: asignaGrua");
		}
	}

}
